package www.study.com;

//盛最多水的容器 https://leetcode.cn/problems/container-with-most-water/
public class code11 {
    public static void main(String[] args) {

    }

    /**
     * 实际上计算   (j - i) * Math.min(height[i], height[j])的最大值
     * 影响上述公式大小因素如下：
     * 1.两个高度之间的距离
     * 2.两个高度的最小值
     * 思路：从最左端(i=0)和最右端(j=0)出发，先保证条件1取最大值，然后比较i、j哪个位置height小，小的移动，不断更新结果
     */
    class Solution {
        public int maxArea(int[] height) {
            int n = height.length;
            int res = (n - 1) * Math.min(height[0], height[n - 1]);
            int i = 0,j = n - 1;
            while(i < j){
                res = Math.max((j - i) * Math.min(height[j], height[i]), res);
                //移动，height[i]和height[j]谁小谁移动
                if(height[i] < height[j]){
                    i++;
                }else{
                    j--;
                }
            }
            return res;
        }
    }
}
